package flow.service;

import flow.model.FlowInstance;
import m.appserver.ActionRedirect;

public interface IFlowService {
	/**
	 * 获取该服务类对应的流程标识
	 * 
	 */
	String getFlowIdentity();

	/**
	 * 获取打开处理业务页面的url
	 * instance 流程实例 可根据流程实例的当前环节标识，返回不同的页面
	 * adminOid 当前登陆人oid
	 */
	ActionRedirect getProcessActionRedirect(FlowInstance ins, String adminOid);
	/**
	 * 获取打开查看业务页面的url
	 * instance 流程实例 可根据流程实例的当前环节标识，返回不同的页面
	 * adminOid 当前登陆人oid
	 */
	ActionRedirect getViewActionRedirect(FlowInstance ins, String adminOid);
	/**
	 * 开始流程后执行
	 *  ins 流程实例  可根据流程实例的当前环节标识，修改业务属性
	 *  Exception 抛异常回滚流程
	 */
	void startFlowAfter(FlowInstance ins) throws Exception;
	/**
	 * 处理流程后执行
	 *  param 参数  可根据参数判断，修改业务类属性
	 *  ins 流程实例  可根据流程实例的当前环节标识，修改业务属性
	 *  Exception 抛异常回滚流程
	 */
	void processFlowAfter(String param,FlowInstance ins) throws Exception;
}
